home *** CD-ROM | disk | FTP | other *** search
- {
- >I need a way to get the current user name from the netware shell.
- >For instance, if I'm logged into server MYSERVER as user SUPERVISOR,
- >I need some way to get 'supervisor' as the user name. (Kind of like
- >WHOAMI would return: You are user SUPERVISOR on server MYSERVER)
-
- In our library of routines we've developed (and continue to do so) lots of
- routines for Novell Netware. The following routines (developed by Peter Ogden
- is to and myself) are to get the current user and I hope I've removed all our
- inter-library references so that it's of use to you:
- }
-
- type
- String48 = string [48];
-
- const
- NetError : Integer = 0;
-
- function GetConnNo : Byte; assembler;
-
- asm
- MOV AX, $DC00
- INT $21
- end;
-
- procedure GetConnInfo (ConnectionNum : Byte; var ObjType : Word;
- var ObjName : String48);
-
- var
- ReqBuf : record
- Size : Word;
- FixedValue : Byte;
- ConnNumber : Byte;
- end;
-
- ReplyBuf : record
- Size : Word;
- ID : LongInt;
- ObType : Word;
- Name : array [1..48] of Byte;
- Reserved : Byte;
- LoginTime : array [1..7] of Byte;
- end;
-
- Regs : Registers;
- Counter : Integer;
- NameString : String;
-
- begin
- with ReqBuf do
- begin
- Size := SizeOf (ReqBuf) - 2;
- FixedValue := $16;
- ConnNumber := ConnectionNum;
- end;
-
- ReplyBuf.Size := SizeOf (ReplyBuf) - 2;
- with Regs do
- begin
- AH := $E3;
- DS := Seg (ReqBuf);
- SI := Ofs (ReqBuf);
- ES := Seg (ReplyBuf);
- DI := Ofs (ReplyBuf);
- MsDos (Regs);
-
- NetError := AL;
- if NetError <> 0 then
- begin
- ObjType := 0;
- ObjName := '';
- end
- else
- with ReplyBuf do
- if ID <> 0 then
- begin
- Counter := 1;
- NameString := '';
- while (Name[Counter] <> 0) do
- begin
- NameString := NameString + Chr (Name [Counter]);
- Inc (Counter);
- end;
- ObjName := NameString;
- ObjType := Swap (ObType);
- end
- else
- begin
- ObType := 0;
- ObjName := '';
- end;
- end;
- end;
-
- function GetUserID : String48;
-
- var
- CN : Byte;
- UserName : String48;
- ObjType : Word;
-
- begin
- CN := GetConnNo;
- GetConnInfo (CN, ObjType, UserName);
- GetUserID := UserName;
- end;
-
-
- I use this with Novell Netware 386 v3.11, as that is the Network that most of
- our Commercial Applications have been developed for. I know speed ups are
- possible especially in processing the ASCIIZ, but hey we only call this routine
- once in an application so it's not high on our priorities for optimisation.
-